'use strict';

const dayjs = require("dayjs");
module.exports = app => {
  const { STRING, INTEGER, DATE, DECIMAL } = app.Sequelize;

  const Major = app.model.define('major', {
    id: {
      type: INTEGER,
      primaryKey: true,
      autoIncrement: true,
    },
    lang: STRING,
    school_id: {
      type: INTEGER,
      allowNull: false,
      comment: '学校ID',
    },
    college: STRING(255), // 学院
    field: STRING(255), // 领域
    major: STRING(255), // 专业
    major_code: STRING(255), // 专业代码
    major_short: STRING(255), // 简称
    description: STRING(255), // 专业介绍
    min_length: INTEGER(11), // 学制
    max_length: INTEGER(11), // 学制
    // 是否接受Part-time	学费
    is_part_time: INTEGER, // 是否接受Part-time
    tuition: DECIMAL(10,2), // 学费
    /**
     * 申请时间
     */
    apply_frequency: INTEGER, // 申请频次 一年一次
    bachelor_degree: STRING, // 本科学历degree
    work_experience: STRING, // 工作经验
    ielts: DECIMAL(10,1), //雅思
    toefl: DECIMAL(10,1), //托福
    us_graduate: STRING, // 美国研究生入学考试(Graduate Record Examination)
    // 是否需要面试
    is_need_interview: INTEGER, // 是否需要面试
    status: INTEGER, //
    create_time: {
      type: DATE,
      get() {
        return dayjs(this.getDataValue('create_time')).format('YYYY-MM-DD HH:mm:ss');
      }
    },
    updated_time: {
      type: DATE,
      get() {
        return dayjs(this.getDataValue('updated_time')).format('YYYY-MM-DD HH:mm:ss');
      }
    }
  }, {
    timestamps: true,
    tableName: 'major',
    comment: '专业表',
    createdAt: 'create_time',
    updatedAt: 'updated_time'
  });

  Major.associate = function() {
    app.model.Major.belongsTo(app.model.School, { foreignKey: 'school_id' });
    app.model.Major.hasMany(app.model.ApplyDate, { foreignKey: 'major_id', as: 'applyDate' });
    app.model.Major.hasMany(app.model.Course, { foreignKey: 'major_id', as: 'courseList' });
  };

  return Major;
};
// 根据以上字段生成mysql建表语句
// CREATE TABLE `major` (
//   `id` int(11) NOT NULL AUTO_INCREMENT,
//   `school_id` int(11) DEFAULT NULL COMMENT '学校ID',
//   `college` varchar(255) DEFAULT NULL COMMENT '学院',
//   `field` varchar(255) DEFAULT NULL COMMENT '领域',
//   `major` varchar(255) DEFAULT NULL COMMENT '专业',
//   `major_short` varchar(255) DEFAULT NULL COMMENT '简称',
//   `description` varchar(255) DEFAULT NULL COMMENT '专业介绍',
//   `length` varchar(255) DEFAULT NULL COMMENT '学制',
//   `is_part_time` int(11) DEFAULT NULL COMMENT '是否接受Part-time',
//   `tuition` varchar(255) DEFAULT NULL COMMENT '学费',
//   `apply_frequency` int(11) DEFAULT NULL COMMENT '申请频次 一年一次',
//   `bachelor_degree` varchar(255) DEFAULT NULL COMMENT '本科学历degree',
//   `work_experience` varchar(255) DEFAULT NULL COMMENT '工作经验',
//   `ielts` varchar(255) DEFAULT NULL COMMENT '雅思',
//   `toefl` varchar(255) DEFAULT NULL COMMENT '托福',
//   `us_graduate` varchar(255) DEFAULT NULL COMMENT '美国研究生入学考试(Graduate Record Examination)',
//   `is_need_interview` int(11) DEFAULT NULL COMMENT '是否需要面试',
//   `status` int(11) DEFAULT NULL,
//   `create_time` datetime DEFAULT NULL,
//   `updated_time` datetime DEFAULT NULL,
//   PRIMARY KEY (`id`)
// ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
